1 module about_foreach;
2 
3 import dunit;
4 import helpers;
5 
6 class AboutForeach
7 {
8   mixin UnitTest;
9 
10   @Test
11   public void arrays_iteration() {
12     auto array = [3, 4, 5, 6];
13 
14     foreach(x; array){ // simple iteration, what is the scope of 'x'?
15       x = x * 2;
16     }
17     assertEquals(array[0], FILL_IN_THIS_NUMBER);
18 
19     foreach(ref x ; array) { // what is changed ?
20       x = x * 2;
21     }
22     assertEquals(array[0], FILL_IN_THIS_NUMBER);
23   }
24 
25   @Test
26   public void strings_iteration() {  // in D, string are immutable arrays of chars
27     char k;
28 
29     foreach(c; "this is a short string") {
30       k = c;
31     }
32 
33     assertEquals(k, FILL_IN_THIS_CHAR);
34   }
35 
36   @Test
37   public void foreach_with_associative_arrays() {
38     int[string] aa;
39     string s;
40     int v;
41 
42     aa["Torvalds"] = 1969;
43     aa["Stallman"] = 1953;
44     aa["Kernighan"] = 1942;
45     aa["Ritchie"] = 1941;
46 
47     foreach (key, value; aa) {
48       s ~= key[0];
49       v += value - 1900;
50     }
51 
52     assertEquals(s, FILL_IN_THIS_STRING);
53     assertEquals(v, FILL_IN_THIS_NUMBER);
54   }
55 
56 
57 }
58